package work.mediway.mdm.biz.service.patient;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

import work.mediway.mdm.core.page.QueryRequest;
import work.mediway.mdm.biz.dto.patient.PatientDTO;
import work.mediway.mdm.biz.entity.patient.PaPatient;
import work.mediway.mdm.biz.vo.patient.PatientDetailVO;
import work.mediway.mdm.biz.vo.patient.PatientListVO;
import work.mediway.mdm.biz.vo.patient.StatisticsPatientNumVO;

/**
 * @author zhongyj <1126834403@qq.com><br/>
 * @date 2020/12/11
 */
public interface PaPatientService extends IService<PaPatient> {

    /**
     * 统计患者日增长量
     *
     * @param startDate String
     * @param endDate   String
     * @return List<Map < String, String>>
     */
    List<Map<String, String>> statisticsNumGroupByDay(String startDate, String endDate);

    /**
     * 统计患者的年龄分布
     *
     * @return Map<String, List < Map < String, Object>>> 分为完整数据和不完整数据
     */
    Map<String, Object> statisticsNumAge();

    /**
     * 统计患者整体信息
     *
     * @return StatisticsPatientNumVO
     */
    StatisticsPatientNumVO statisticsPatient();

    /**
     * 查询患者列表信息
     *
     * @param queryRequest QueryRequest
     * @param patient      PatientDTO
     * @return Page<PatientVO>
     */
    Page<PatientListVO> pagePatientList(QueryRequest queryRequest, PatientDTO patient);

    /**
     * 根据患者平台Id查询患者的详细信息
     *
     * @param patPatientId 平台Id
     * @param hosPatientId 院内Id
     * @return PatientDetailVO
     */
    PatientDetailVO getPatientDetail(String patPatientId, String hosPatientId);

    /**
     * 查询最大患者ID
     *
     * @return String
     */
    String maxPatientId();

    /**
     * 查询当前ID后的数据
     *
     * @param btCurrentId 当前ID
     * @return List<PaPatient>
     */
    List<PaPatient> listLaterByPatientId(String btCurrentId);


    /**
     * 查询患者渠道信息
     *
     * @return List<String>
     */
    List<String> patientPath();

}
